package jianzhiOffer;

//剑指 Offer 54. 二叉搜索树的第k大节点
public class Num54_kthLargest {
    //全局变量
    int res,k;
    public int kthLargest(TreeNode root, int k) {
        //传入k
        this.k = k;
        //中序遍历二叉树，把结果放到res中
        dfd(root);
        return res;
    }
    private void dfd(TreeNode root) {
        //递归出口
        if (root == null)return;
        //前k大，从后往前遍历
        dfd(root.right);
//        if (k == 0)return;
        if (--k == 0){
            res = root.val;
        }
        dfd(root.left);
    }


//    //全局变量
//    int res,k;
//    public int kthLargest(TreeNode root, int k) {
//        this.k = k;
//        dfs(root);
//        return res;
//    }
//    //中序遍历提前返回
//    private void dfs(TreeNode root) {
//        if (root == null){
//            return;
//        }
//        dfs(root.right);
//        if (k == 0){
//            return;
//        }
//        if (--k == 0){
//            res = root.val;
//        }
//        dfs(root.left);
//    }
}
